package com.xyh.cloudorder.utils;

import java.math.BigDecimal;


public class Nulls {
	/**
	 * 校验是否为空（null && ""）
	 */
	public static boolean isEmpty(String data){
		boolean flag = false;
		if(data == null || "".equals(data)){
			flag = true;
		}
		return flag;
	}
	/**
	 * 校验是否为空（null && ""）
	 */
	public static boolean isEmpty(Object object){
		boolean flag = false;
		if(object == null || "".equals(object.toString())){
			flag = true;
		}
		return flag;
	}
	
	/**
	 * 校验是否为空，为空时抛出异常
	 * @param data：校验数据
	 * @param errorMsg：异常信息
	 */
	public static void isEmpty(String data, String errorMsg){
		if(data == null || "".equals(data)){
			throw new RuntimeException(errorMsg);
		}
	}
	
	public static boolean isNotEmpty(String data){
		return !isEmpty(data);
	}
	
	/**
	 * 当为NULL时，不返回NULL而是返回""
	 * 相当于三元运算符
	 * obj == null ? return "" : return obj;
	 * @param obj
	 * @return
	 */
	public static String nullToString(Object obj){
		if(obj == null){
			return "";
		}
		return obj.toString();
	}
	
	/**
   * 当为NULL时，不返回NULL而是返回""
   * 相当于三元运算符
   * obj == null ? return "" : return obj;
   * @param obj
   * @param defaultValue
   * @return
   */
  public static String nullToString(Object obj, String defaultValue){
    if(obj == null){
      if(Nulls.isNotEmpty(defaultValue)){
        return defaultValue;
      } else {
        return "";
      }
    }
    return obj.toString();
  }
	
	/**
   * 当为NULL时，不返回NULL而是返回"0"
   * 相当于三元运算符
   * obj == null ? return "0" : return obj;
   * @param obj
   * @return
   */
	public static BigDecimal nullToBigDecimal(Object obj){
		BigDecimal value;
		if(obj == null){
			value =  BigDecimal.ZERO;
		}else{
			value = (BigDecimal)obj;
		}		
		return value;
	}
	
	/**
   * 当为NULL时，不返回NULL而是返回"0"
   * 相当于三元运算符
   * obj == null ? return "0" : return obj;
   * @param obj
   * @return
   */
	public static Long nullToLong(Object obj){
		Long value = null;
		try{
			if(obj == null){
				value =  0L;
			}else{
				if(obj instanceof Long){
					value = (Long)obj;
				}else if(obj instanceof String){
					value = Long.valueOf((String)obj);
				}				
			}
		}catch(Exception e){
			throw new RuntimeException((String)obj,e);
		}
		
		return value;
	}
	
	
}
